تحت شرايطی
بعضاً ممكن است به تغيير يك Master Page بصورت
پويا نياز پيدا كنيم. مثلا" ممكن است در يك وب
سايت برای موضوعات مختلف طرح بندی سايت تغيير كند.
بديهی است كه برای اين منظور بسته به نيازمان
Master Page های مختلفی را در ابتدای كار می بايست
ايجاد كنيم. در اين مقاله می آموزيد كه چگونه می
توان بصورت پويا يك Master Page را با ديگری
جايگزين كرد.
برای اين منظور Master Page دوم را به وب سايتمان
كه در قسمت اول مقاله ايجاد كرديم اضافه كرده و يك
كنترل button برای سوئيچ كردن بين Master Page ها
اضافه می كنيم. از آنجا كه Master Page دوم بسيار
شبيه اولی می باشد لذا تنها كافيست يك كپی از آن
تهيه كرده و برای تمايز، رنگ پس زمينه آن را تغيير
دهيم.
برای اين منظور مراحل زير را دنبال كنيد:
١- در Solution Explorer بر روی Master1.master
راست كليك كرده و گزينه كپی را انتخاب كنيد.
٢- بر روی نام وب سايت راست كليك كرده و گزينه
paste را انتخاب كنيد.
٣- Master Page كپی شده را به Master2.master
تغيير نام دهيد.
٤- فايل Master2.master را در حالت Html باز كرده
و در قسمت Master1 ،@Master را به Master2 تغيير
دهيد.
Master Language="C#"
CompileWith="Master2.master.cs"
ClassName="Master2_master@"
٥- به حالت Design View برويد.
٦- در پنجره properties از ليست باز شو كه در قسمت
بالای اين پنجره قرار دارد گزينه DOCUMENT را
انتخاب كنيد.
۷- مقدار BgColor را به دلخواه تغيير دهيد.
۸- Master Page جديد را در حالت سورس كد باز كنيد
و نام كلاس را از Master1_master به
Master2_master تغيير دهيد.
برای اضافه كردن يك button جهت تغيير پويا Master
Page ها مطابق زير عمل كنيد:
١- يك كنترل از نوع LinkButton به پايين صفحه
Master2.master اضافه كرده و برای آن يك نام
انتخاب كنيدمثلا" “Change to MP1”
٢- بر روی button دو بار كليك كنيد تا تابع رويداد
كليك آن ايجاد شود. سپس كد زير را به آن اضافه
كنيد.
void LinkButton1_Click(object sender,
EventArgs e)
{
Session("masterpage") =
"MasterPage1.master";
Response.Redirect(Request.Url.ToString());
}
كد فوق موجب بار گزاری نام Master Page اول در
Session شده و سپس صفحه جاری دوباره فراخوانی می
شود.
٣- صفحه Master1.master را باز كنيد و يك كنترل
LinkButton مطابق مراحل فوق به آن اضافه كنيد و
نوشته روی آن را “Change to MP2” قرار دهيد.
٤- در تابع مربوط به رويداد كليك آن كد زير را
اضافه كنيد.
void LinkButton1_Click(object sender,
EventArgs e)
{
Session("masterpage") =
"MasterPage2.master";
Response.Redirect(Request.Url.ToString());
}
٥- صفحه About.aspx را در حالت سورس كد باز
كنيد.
٦- تابع Page_PreInit را اضافه كرده و كد زير را
در آن بنويسيد.
كد فوق باعث جايگزين كردن محتويات [Session[“masterpage”
با مقدار مشخصه Me.MasterPageFile می شود. اين كار
می بايست حتما" در تابع Page_PreInit صورت گيرد.
زيرا در يك WebForm قبل از هرگونه مقدار دهی اوليه
می بايست تكليف Master Page آن مشخص شود. و بهترين
گزينه تابع Page_PreInit می باشد. لذا قرار دادن
اين كد در توابعی مثل Page_Init و Page_Load كه
بعد از تابع Page_PreInit فراخوانده می شوند،
تأثير گذار نخواهد بود.
حال بعد از اعمال مراحل فوق حاصل كار را مطابق زير
امحان می كنيم:
١- CTRL+F5 را فشار دهید تا صفحه home در browser
نمایان شود.
٢- به صفحه About رفته و بر روی Chage to MP2 کلیک
کنید. مشاهده می کنید که صفحه About با
Master2.master باز خواهد شد.
٣- بر روی Change to MP1 کلیک کنید. می بینید که
اینبار صفحه About با Master1.master باز می شود.
مراحل فوق يك مثال بسيار ساده برای تغيير Master
Page ها بصورت پويا را شامل می شدند. امروزه بعضی
از وب سايتها مثل MSN.com اين قابليت را برای
كاربران عضو مهيا ساخته اند كه بتوانند طرح بندی
صفحه مربوط به خود را بصورت پويا براحتی تغيير
دهند. مسلماً استفاده از Master Page ها برای اين
منظور كار را بسيار ساده و سريع خواهد نمود.
دریافت Web Developer 2005 Express Edition (ASP.NET
2) beta
مرجع: MSDN